import store from '@/store';
import axios from 'axios'
import router from '@/router';

// create an axios instance
const service = axios.create({
  baseURL: process.env.VUE_APP_BASE_API,
  // baseURL:'http://ihrm-java.itheima.net/api',
  // baseURL: process.env.VUE_APP_BASE_API, // url = base url + request url
  // withCredentials: true, // send cookies when cross-domain requests
  timeout: 5000 // request timeout
})

// 添加请求拦截器
service.interceptors.request.use(function (config) {
  // 在发送请求之前做些什么
  // token携带到请求头
  // 看吉利项目哪里取的token 重要!!
  console.log('代码到这里了吗');

  const token = store.state.user.token
  // const token = localStorage.getItem('token');
  console.log('我是拦截器, token 为:', token)
  if (token) {
    config.headers.Authorization = `Bearer ${token}`
    console.log( config.headers.Authorization = `Bearer ${token}`,' config.headers.Authorization = `Bearer ${token}`');
    // config.headers["Authorization"] = `Bearer ${getToken()}`;
    // axios.defaults.headers.common['Authorization'] = `Bearer ${token}`;
  }
  return config;
}, function (error) {
  // 对请求错误做些什么
  return Promise.reject(error);
});

// 响应拦截器  三件事情
service.interceptors.response.use(function (response) {
  // 对响应数据做点什么
  if(response.data.success){
    // 1.数据脱壳
  return response.data
  } else {
    // 2.解决登录失败不报错的问题
    return  Promise.reject(new Error('请求错误'));
  }
}, async function ( error) {
  // 对响应错误做点什么
  // 3.token失效后如何处理
  if (error.response.data.code === 10002) {
    console.log('代表token失效');
   await store.dispatch('user/userLogout')
  }
  return Promise.reject(error);
});

export default service
